package com.luoy.mapreduce.worldcount;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;
/**
 * KEYIN:输入数据的key  文件的行号
 * VALUEIN：每行的输入数据
 *
 * KEYOUT：输出数据 的key
 * VALUEOUT:输出数据的value类型
 *
 * 参数1：输入类型 k  文本数据的行号
 * 参数2：输入类型 v  文本数据的值
 * 参数3：输出类型 k
 * 参数4：输出类型 v
 */
public class WordcountMapper extends Mapper<LongWritable, Text, Text, IntWritable>{

	//hello world
	//luoy  yangj
	@Override
	protected void map(LongWritable key, Text value, Context context)
			throws IOException, InterruptedException {
		// 1获取这一行数据，转换成string   定义成Text类型，为了更好序列化，为了传输时速度更快
		String line = value.toString();

		// 2 获取每一个单词
		String[] words = line.split(" ");

		for(String word:words){
			// 3 输出每一个单词，并计数,格式类似于这样  luoy 1  yangj  1
			context.write(new Text(word), new IntWritable(1));
		}
	}
}



